// /**
//  * 初始化
//  */
// $(function () {
//     // 表单验证和提交处理
//     // $("#scoreForm").validate({
//     //     submitHandler: function (form) {
//     //         saveScore();
//     //     }
//     // });
//     $('.fixed-table-pagination').show();
//     // 初始化表格
//     $('#courseTb').bootstrapTable({
//         method: 'GET',
//         url: '/webapi/course/list', // 初始加载地址，这里假设是用于加载所有成绩数据的接口
//         striped: true,
//         cache: false,
//         pagination: true,
//         sortable: false,
//         sidePagination: "server", // 后端分页
//         pageNumber: 1,
//         pageSize: 3,
//         pageList: [3, 6, 10, 20, 100],
//         queryParams: function (params) {
//             return {
//                 pageSize: params.limit,
//                 pageNum: params.offset / params.limit + 1
//             };
//         },
//         columns: [{
//             checkbox: true,
//         }, {
//             field: 'id',
//             title: '课程ID'
//         }, {
//             field: 'cno',
//             title: '课程号'
//         }, {
//             field: 'cname',
//             title: '课程名称'
//         }, {
//             field: 'credit',
//             title: '学分'
//         }, {
//             field: 'chour',
//             title: '课时'
//         }, {
//             field: 'handle',
//             title: '操作',
//             formatter: operateFormatter // 自定义操作列的格式化函数
//         }]
//     });
//     $('#allCourse').hide();
//     // 点击按钮刷新表格
//     $('#allCourse').click(function () {
//         $('#courseTb').bootstrapTable('refresh');
//     });
// });
// // 自定义操作列的格式化函数
// function operateFormatter(value, row, index) {
//     // 返回操作按钮的HTML代码
//     return [
//         '<button class="btn btn-sm btn-primary mr-2" onclick="openSelectModal(' + row.cno + ')">选课</button>',
//     ].join('');
// }
// /**
//  * 处理后端返回的操作结果
//  * @param {Object} result 后端返回的结果对象，包含code和msg字段
//  */
// function handleResponse(result) {
//     if (result.code === 1 || result.length > 0) {
//         console.log('操作成功');
//     } else {
//         console.error('操作失败');
//     }
// }
// /**
//  * 查询学生信息，并更新Bootstrap表格显示
//  */
// function searchCourse() {
//     var searchBy = $("#searchBy").val(); // 获取查询方式
//     var keyword = $("#searchInput").val().trim(); // 获取查询关键词
//     if (keyword !== "") {
//         $.ajax({
//             url: "/webapi/course/search", // 发送查询请求的 URL
//             method: "GET",
//             data: {
//                 searchBy: searchBy,
//                 keyword: keyword
//             }
//         }).done(function (result) {
//             handleResponse(result);
//             if (result.length > 0) {
//                 // 更新Bootstrap表格数据
//                 $('#courseTb').bootstrapTable('load', {
//                     total: result.length,
//                     rows: result
//                 });
//                 $('#searchModal').modal('hide'); // 关闭模态框
//                 $('#allCourse').show();
//                 // 为按钮添加点击事件处理函数
//                 $('#allCourse').on('click', function () {
//                     $(this).hide(); // 隐藏按钮
//                 });
//                 $('.fixed-table-pagination').hide();
//             } else {
//                 // 如果没有查询到结果，显示空数据
//                 $('#courseTb').bootstrapTable('removeAll');
//                 $('#courseTb').bootstrapTable('append', []);
//                 $('#courseTb').bootstrapTable('load', {
//                     total: 0,
//                     rows: []
//                 });
//                 $('#searchModal').modal('hide'); // 关闭模态框
//                 $('#allCourse').show();
//                 // 为按钮添加点击事件处理函数
//                 $('#allCourse').on('click', function () {
//                     $(this).hide(); // 隐藏按钮
//                 });
//                 $('.fixed-table-pagination').hide();    //隐藏分页，显示所有相关学生信息
//                 alert("没有找到相关学生信息!!!")
//             }
//         });
//     }
// }


// /**
//  * 预新增
//  */
// function preAdd() {
//     $('#id').val(0);    //提示新增
//     $('#SelectForm')[0].reset();
// }
// /**
//  * 验证新增学生时学号和课程是否重复
//  * @param studentNo
//  * @param cno
//  */
// function checkDuplicate(studentNo, cno) {
//     // var id = $('#id').val();
//     // if (id < 1) {
//     $.ajax({
//         url: "/webapi/select/checkDuplicate",
//         method: "POST",
//         contentType: "application/json", // 设置内容类型为 JSON
//         data: JSON.stringify({ studentNo: studentNo, cno: parseInt(cno) }), // 将 cno 转换为整数
//         success: function (response) {
//             if (response.studentExists) {
//                 if (response.courseExists) {
//                     alert("该学生已选择过该课程，不能重复新增！");
//                     $('#saveBtn').prop('disabled', true); // 禁用保存按钮
//                 } else {
//                     $('#saveBtn').prop('disabled', false); // 启用保存按钮
//                 }
//             } else {
//                 alert("学号不存在，请输入有效的学号！");
//                 $('#saveBtn').prop('disabled', true); // 禁用保存按钮
//             }
//         },
//         error: function () {
//             alert("检查学号和课程时出错，请稍后重试！");
//         }
//     });
//     // }
// }
// /**
//  * 验证新增学生时学号是否重复
//  * @param studentNo
//  */
// function checkDuplicateNo(studentNo) {
//     var id = $('#id').val();
//     if (id < 1) {
//         $.ajax({
//             url: "/webapi/select/checkDuplicateNo",
//             method: "POST",
//             data: { studentNo: studentNo },
//             success: function (response) {
//                 if (response) {
//                     // 学号已存在，可以继续新增
//                     $('#saveBtn').prop('disabled', false); // 启用保存按钮
//                 } else {
//                     // 学号不存在，禁止保存
//                     alert("学号不存在，请输入已存在的学号！");
//                     $('#saveBtn').prop('disabled', true); // 禁用保存按钮
//                 }
//             },
//             error: function () {
//                 alert("检查学号重复时出错，请稍后重试！");
//             }
//         });
//     }
// }

// function openSelectModal(cno) {
//     $.ajax({
//         url: "/webapi/teacher/searchByCno",
//         method: "GET",
//         data: { cno: cno },
//         success: function (response) {
//             console.log("Teacher response:", response); // 调试信息
//             if (response && response.length > 0 && response[0].teacherNo) {
//                 var teacherNo = response[0].teacherNo;
//                 var studentName = localStorage.getItem('name');
//                 $.ajax({
//                     url: '/webapi/student/searchByName',
//                     method: 'GET',
//                     data: { studentName: studentName },
//                     success: function (data) {
//                         console.log("Student response:", data); // 调试信息
//                         if (data && data.length > 0) {
//                             var studentNo = data[0].studentNo;
//                             console.log("Saving selection with studentNo:", studentNo, "cno:", cno, "teacherNo:", teacherNo); // 调试信息
//                             saveSelect(studentNo, cno, teacherNo); // 使用 response[0].teacherNo 获取教师工号
//                         } else {
//                             alert('Student not found');
//                         }
//                     },
//                     error: function (jqXHR, textStatus, errorThrown) {
//                         console.error('Error fetching student data:', textStatus, errorThrown);
//                         alert("无法获取学生信息，请稍后重试！");
//                     }
//                 });
//             } else {
//                 alert("无法获取教师信息或教师工号为空，请稍后重试！");
//             }
//         },
//         error: function () {
//             alert("获取课程详情时出错，请稍后重试！");
//         }
//     });
// }

// /**
//  * 保存选课信息（新增或更新）
//  */
// function saveSelect(studentNo, cno, teacherNo) {
//     var formData = {
//         studentNo: studentNo,
//         cno: cno,
//         teacherNo: teacherNo
//     };
//     console.log("Form data to be saved:", formData); // 调试信息
//     $.ajax({
//         url: "/webapi/select/add",
//         method: "POST",
//         contentType: "application/json", // 设置内容类型为 JSON
//         data: JSON.stringify(formData), // 将表单数据转换为 JSON 字符串
//         success: function (response) {
//             console.log("Save response:", response); // 调试信息
//             handleResponse(response);
//             if (response === -1) {
//                 alert("该学生已选择过该课程，请输入不同的课程号！");
//             } else {
//                 alert("选课成功！");
//                 $("#selectTb").bootstrapTable('refresh'); // 刷新表格数据
//             }
//         },
//         error: function (jqXHR, textStatus, errorThrown) {
//             console.error('Error saving selection:', textStatus, errorThrown);
//             alert("保存失败，请稍后重试！");
//         }
//     });
// }


// /**
//  * 保存选课信息（新增或更新）
//  * @param {string} studentNo 学生学号
//  * @param {number} cno 课程号
//  * @param {string} teacherNo 教师工号
//  */
// function saveSelect(studentNo, cno, teacherNo) {
//     var data = {
//         studentNo: studentNo,
//         cno: cno,
//         teacherNo: teacherNo
//     };

//     $.ajax({
//         url: "/webapi/select/add",
//         method: "POST",
//         contentType: "application/json",
//         data: JSON.stringify(data),
//         success: function (response) {
//             handleResponse(response);
//             if (response === -1) {
//                 alert("该学生已选择过该课程，请输入不同的课程号！");
//             } else {
//                 $('#myModal').modal('hide');
//                 $("#selectTb").bootstrapTable('refresh');
//             }
//         },
//         error: function () {
//             alert("保存失败，请稍后重试！");
//         }
//     });
// }

// $(function () {
//     $('#allCourse').on('click', function () {
//         $(this).hide(); // 隐藏查询所有按钮
//     });
// });
// // 添加模态框的表单提交处理
// $(function () {
//     $('#SelectForm').on('submit', function (event) {
//         event.preventDefault();
//         saveSelect();
//     });
// });
/**
 * 初始化
 */
$(function () {
    $('.fixed-table-pagination').show();
    // 初始化表格
    $('#courseTb').bootstrapTable({
        method: 'GET',
        url: '/webapi/course/list', // 初始加载地址，这里假设是用于加载所有成绩数据的接口
        striped: true,
        cache: false,
        pagination: true,
        sortable: false,
        sidePagination: "server", // 后端分页
        pageNumber: 1,
        pageSize: 3,
        pageList: [3, 6, 10, 20, 100],
        queryParams: function (params) {
            return {
                pageSize: params.limit,
                pageNum: params.offset / params.limit + 1
            };
        },
        columns: [{
            checkbox: true,
        }, {
            field: 'id',
            title: '课程ID'
        }, {
            field: 'cno',
            title: '课程号'
        }, {
            field: 'cname',
            title: '课程名称'
        }, {
            field: 'credit',
            title: '学分'
        }, {
            field: 'chour',
            title: '课时'
        }, {
            field: 'handle',
            title: '操作',
            formatter: operateFormatter // 自定义操作列的格式化函数
        }]
    });
    $('#allCourse').hide();
    // 点击按钮刷新表格
    $('#allCourse').click(function () {
        $('#courseTb').bootstrapTable('refresh');
    });
});

// 自定义操作列的格式化函数
function operateFormatter(value, row, index) {
    // 返回操作按钮的HTML代码
    return [
        '<button class="btn btn-sm btn-primary mr-2" onclick="openSelectModal(' + row.cno + ')">选课</button>',
    ].join('');
}

/**
 * 处理后端返回的操作结果
 * @param {Array} result 后端返回的结果数组，每个元素是一个课程对象
 */
function handleResponse(result) {
    console.log("handleResponse called with:", result); // 调试信息
    // 假设这里根据具体业务逻辑来判断操作是否成功
    if (result.length > 0) {
        console.log('操作成功');
    } else {
        console.error('操作失败');
    }
}
/**
 * 查询学生信息，并更新Bootstrap表格显示
 */
function searchCourse() {
    var searchBy = $("#searchBy").val(); // 获取查询方式
    var keyword = $("#searchInput").val().trim(); // 获取查询关键词
    if (keyword !== "") {
        $.ajax({
            url: "/webapi/course/search", // 发送查询请求的 URL
            method: "GET",
            data: {
                searchBy: searchBy,
                keyword: keyword
            }
        }).done(function (result) {
            handleResponse(result);
            if (result.length > 0) {
                // 更新Bootstrap表格数据
                $('#courseTb').bootstrapTable('load', {
                    total: result.length,
                    rows: result
                });
                $('#searchModal').modal('hide'); // 关闭模态框
                $('#allCourse').show();
                // 为按钮添加点击事件处理函数
                $('#allCourse').on('click', function () {
                    $(this).hide(); // 隐藏按钮
                });
                $('.fixed-table-pagination').hide();
            } else {
                // 如果没有查询到结果，显示空数据
                $('#courseTb').bootstrapTable('removeAll');
                $('#courseTb').bootstrapTable('append', []);
                $('#courseTb').bootstrapTable('load', {
                    total: 0,
                    rows: []
                });
                $('#searchModal').modal('hide'); // 关闭模态框
                $('#allCourse').show();
                // 为按钮添加点击事件处理函数
                $('#allCourse').on('click', function () {
                    $(this).hide(); // 隐藏按钮
                });
                $('.fixed-table-pagination').hide();    //隐藏分页，显示所有相关学生信息
                alert("没有找到相关学生信息!!!")
            }
        });
    }
}

/**
 * 验证新增学生时学号和课程是否重复
 * @param {string} studentNo 学生学号
 * @param {number} cno 课程号
 * @param {function} callback 回调函数
 */
function checkDuplicate(studentNo, cno, callback) {
    $.ajax({
        url: "/webapi/select/checkDuplicate",
        method: "POST",
        contentType: "application/json", // 设置内容类型为 JSON
        data: JSON.stringify({ studentNo: studentNo, cno: parseInt(cno) }), // 将 cno 转换为整数
        success: function (response) {
            console.log("Check duplicate response:", response); // 调试信息
            callback(response); // 调用回调函数
        },
        error: function (jqXHR, textStatus, errorThrown) {
            console.error('Error checking duplicate:', textStatus, errorThrown); // 调试信息
            alert("检查学号和课程时出错，请稍后重试！");
            callback({ success: false }); // 调用回调函数，标识失败
        }
    });
}
function openSelectModal(cno) {
    var studentName = localStorage.getItem('name');
    if (!studentName) {
        alert('Student name not found in localStorage');
        return;
    }

    // 查询当前登录学生信息
    $.ajax({
        url: '/webapi/student/searchByName',
        method: 'GET',
        data: { studentName: studentName },
        success: function (studentData) {
            console.log("Student response:", studentData); // 调试信息
            if (studentData && studentData.length > 0) {
                var studentNo = studentData[0].studentNo;

                // 查询课程对应的教师信息
                $.ajax({
                    url: "/webapi/teacher/searchByCno",
                    method: "GET",
                    data: { cno: cno },
                    success: function (teacherResponse) {
                        console.log("Teacher response:", teacherResponse); // 调试信息
                        if (teacherResponse && teacherResponse.length > 0 && teacherResponse[0].teacherNo) {
                            var teacherNo = teacherResponse[0].teacherNo;

                            console.log("Preparing to save selection with studentNo:", studentNo, "cno:", cno, "teacherNo:", teacherNo); // 调试信息
                            
                            // 先检查是否已经选了该课程
                            checkDuplicate(studentNo, cno, function (response) {
                                console.log(response);
                                if (response.studentExists) {
                                    if (response.courseExists) {
                                        alert("已选择过该课程，不能重复选课！");
                                    } else {
                                        saveSelect(studentNo, cno, teacherNo); // 如果可以选课，则进行保存
                                    }
                                } else {
                                    // alert("学号不存在，请输入有效的学号！");
                                    saveSelect(studentNo, cno, teacherNo); // 没有选课，则进行保存
                                }
                            });
                        } else {
                            alert("无法获取教师信息或教师工号为空，请稍后重试！");
                        }
                    },
                    error: function (jqXHR, textStatus, errorThrown) {
                        console.error('Error fetching teacher data:', textStatus, errorThrown); // 调试信息
                        alert("获取课程详情时出错，请稍后重试！");
                    }
                });
            } else {
                alert('Student not found');
            }
        },
        error: function (jqXHR, textStatus, errorThrown) {
            console.error('Error fetching student data:', textStatus, errorThrown);
            alert("无法获取学生信息，请稍后重试！");
        }
    });
}
/**
 * 保存选课信息（新增或更新）
 */
function saveSelect(studentNo, cno, teacherNo) {
    var formData = {
        studentNo: studentNo,
        cno: cno,
        teacherNo: teacherNo
    };
    console.log("Form data to be saved:", formData); // 调试信息
    $.ajax({
        url: "/webapi/select/add",
        method: "POST",
        contentType: "application/json", // 设置内容类型为 JSON
        data: JSON.stringify(formData), // 将表单数据转换为 JSON 字符串
        success: function (response) {
            console.log("Save response:", response); // 调试信息
            if (response) {
                alert("选课成功！");
                $("#selectTb").bootstrapTable('refresh'); // 刷新表格数据
            } else if (response.code === -1) {
                alert("该学生已选择过该课程，请输入不同的课程号！");
            } else {
                alert("保存失败，请稍后重试！");
            }
        },
        error: function (jqXHR, textStatus, errorThrown) {
            console.error('Error saving selection:', textStatus, errorThrown); // 调试信息
            alert("保存失败，请稍后重试！");
        }
    });
}

// 添加模态框的表单提交处理
$(function () {
    $('#SelectForm').on('submit', function (event) {
        event.preventDefault();
        var studentNo = $('#studentNo').val();
        var cno = $('#cno').val();
        var teacherNo = $('#teacherNo').val();
        // 先检查是否已经选了该课程
        checkDuplicate(studentNo, cno, function (response) {
            if (response.studentExists) {
                if (response.courseExists) {
                    alert("该学生已选择过该课程，不能重复新增！");
                } else {
                    saveSelect(studentNo, cno, teacherNo); // 如果可以选课，则进行保存
                }
            } else {
                alert("学号不存在，请输入有效的学号！");
            }
        });
    });
});


